package com.twb.system.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.BeansException;

import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.system.entity.importExport.ImportExport;
import com.twb.system.entity.importExport.dto.SaveImportResultInfoDto;
import com.twb.system.entity.importExport.dto.SearchImportExportDto;
import com.twb.system.entity.importExport.vo.SaveImportExportVo;
import com.twb.system.entity.importExport.vo.SaveImportResultInfoVo;
import com.twb.system.entity.importExport.vo.SearchImportExportVo;
import com.twb.system.entity.importExport.vo.UpdateImportExportByIdVo;

/**
 * @ClassName IImportExportService
 * @Description 异步导入导出记录表 service接口
 * 
 * @author DHL
 * @date 2021-08-09 09:39:11
 */
public interface IImportExportService extends IBaseService<ImportExport> {

	/**
	 * @Title  searchImportExport
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public TwbPageInfo<SearchImportExportDto> searchImportExport(SearchImportExportVo vo);

	/**
	 * @Title  searchImportExport
	 * @Description 查询集合
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public List<SearchImportExportDto> searchImportExportList(SearchImportExportVo vo);

	/**
	 * @Title  saveImportExport
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public ImportExport saveImportExport(SaveImportExportVo vo, HttpServletRequest request);

	/**
	 * @Title  updateImportExportById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public int updateImportExportById(UpdateImportExportByIdVo vo);

	/**
	 * @Title  deleteImportExportById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public int deleteImportExportById(String id);

	/**
	 * @Title  deleteImportExportByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public int deleteImportExportByIds(String ids);

	/**
	 * @Title  logicBatchDeleteImportExportByIds
	 * @Description 批量逻辑删除
	 * @param ids
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public int logicBatchDeleteImportExportByIds(String ids);

	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public void exportExcel(SearchImportExportVo vo, HttpServletResponse response) throws Exception;

	/**
	 * @Title  importExcel
	 * @Description 导入excel
	 * @param map
	 * @return
	 * @author DHL
	 * @date 2021-08-09 09:39:11
	 */
	public int importExcel(Map<String, String> map);

	/**
	 * @Title saveImportResult
	 * @Description 保存导入结果
	 * @param vo
	 * @return
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * @throws BeansException 
	 * @author DHL
	 * @date 2021年8月9日 上午10:03:26
	 */
	SaveImportResultInfoDto saveImportResult(SaveImportResultInfoVo vo) throws BeansException, InstantiationException, IllegalAccessException;

	/**
	 * @Title execute
	 * @Description 执行导入Excel
	 * @param importExcelId
	 * @return
	 * @author DHL
	 * @date 2021年8月9日 下午6:02:26
	 */
	ImportExport execute(String importExcelId);
}
